package gervosou;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import java.awt.ScrollPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JSeparator;
import javax.swing.JList;
import java.awt.Choice;
import javax.swing.JComboBox;

public class VueRetraitArgent extends Vue {

	private Societe _societe ;
	private CompteSociete _compteS ;
	private ClientPhysique _clientP ;
	private ComptePerso _compteP ;
	private JPanel contentPane;
	
	private final ButtonGroup buttonGroup = new ButtonGroup();
	private JButton btnAnnuler1;
	private JButton btnAnnuler2;
	private JButton btnRechercher;
	private JButton btnQuitter;
	private JButton btnRechercher2;
	private JButton btnValider;
	private JTextField textFieldNumCompte;
	private JLabel lblNom;
	private JLabel lblPrenom;
	private JTextField textFieldNom;
	private JTextField textFieldPrenom;
	private JTextField textFieldMontant;
	/**
	 * Create the frame.
	 */
	public VueRetraitArgent(Controleur controleur) {
		super(controleur);
		setTitle("Consulter un compte societe");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 484, 490);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		
		//separator////////////////////////////////////
		JSeparator separator = new JSeparator();
		separator.setBounds(226, 145, -50, 2);
		contentPane.add(separator);
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(89, 145, 328, -11);
		contentPane.add(separator_1);
		
		JSeparator separator_2 = new JSeparator();
		separator_2.setBounds(60, 134, 367, 16);
		contentPane.add(separator_2);		
		
		JSeparator separator_3 = new JSeparator();
		separator_3.setBounds(50, 281, 367, 16);
		contentPane.add(separator_3);
		
		JLabel lblNumCompte = new JLabel("Numéro de compte : ");
		lblNumCompte.setBounds(50, 53, 148, 16);
		contentPane.add(lblNumCompte);
		////////////////////////////////////////////////
		
		//TextField/////////////////////////////////////
		
		textFieldNumCompte = new JTextField();
		textFieldNumCompte.setBounds(215, 48, 134, 28);
		contentPane.add(textFieldNumCompte);
		textFieldNumCompte.setColumns(10);
		
		
		btnRechercher = new JButton("Rechercher");
		btnRechercher.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int numCompte = Integer.parseInt(textFieldNumCompte.getText());
				// liaison de la vue avec l'objet observe
				if(getControleur().rechComptePerso(numCompte) != null)
					setComptePerso (getControleur().rechComptePerso(numCompte));
				else 
					setCompteSociete (getControleur().rechCompteSociete(numCompte));
			}
			});
		btnRechercher.setBounds(277, 93, 117, 29);
		contentPane.add(btnRechercher);
		
		btnQuitter = new JButton("Quitter");
		btnQuitter.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					getControleur().fermerVue(VueRetraitArgent.this);}
		});
		btnQuitter.setBounds(80, 93, 117, 29);
		contentPane.add(btnQuitter);
		
		lblNom = new JLabel("Nom : ");
		lblNom.setBounds(70, 162, 61, 15);
		contentPane.add(lblNom);
		
		lblPrenom = new JLabel("Prenom : ");
		lblPrenom.setBounds(70, 206, 61, 15);
		contentPane.add(lblPrenom);
		
		textFieldNom = new JTextField();
		textFieldNom.setColumns(10);
		textFieldNom.setBounds(215, 162, 134, 28);
		contentPane.add(textFieldNom);
		
		textFieldPrenom = new JTextField();
		textFieldPrenom.setColumns(10);
		textFieldPrenom.setBounds(215, 204, 134, 28);
		contentPane.add(textFieldPrenom);
		
		btnRechercher2 = new JButton("Rechercher");
		btnRechercher2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				ComptePerso cp;
				CompteSociete cs;
				String nom = textFieldNom.getText();
				String prenom = textFieldPrenom.getText();
				if (getComptePerso() != null){
					ClientPhysique clp = getControleur().rechClientPhysique(nom+prenom);
					int numCompte = Integer.parseInt(textFieldNumCompte.getText());
					cp = getControleur().compteDuClient(clp, getControleur().rechComptePerso(numCompte));
				}
				else {
					Mandataire man = getControleur().rechMandataire(nom+prenom);
					int numCompte = Integer.parseInt(textFieldNumCompte.getText());
					cs = getControleur().compteDuClient(man, getControleur().rechCompteSociete(numCompte));
					 getControleur().changerEtatVueRetraitArgent();
				}
			}
		});
		btnRechercher2.setBounds(277, 244, 117, 29);
		contentPane.add(btnRechercher2);
		
		btnAnnuler1 = new JButton("Annuler");
		btnAnnuler1.setBounds(80, 244, 117, 29);
		contentPane.add(btnAnnuler1);
		
		JLabel lblMontant = new JLabel("Montant : ");
		lblMontant.setBounds(70, 311, 71, 16);
		contentPane.add(lblMontant);
		
		textFieldMontant = new JTextField();
		textFieldMontant.setColumns(10);
		textFieldMontant.setBounds(215, 309, 134, 28);
		contentPane.add(textFieldMontant);
		
		btnAnnuler2 = new JButton("Annuler");
		btnAnnuler2.setBounds(80, 361, 117, 29);
		contentPane.add(btnAnnuler2);
		
		btnValider = new JButton("Valider");
		btnValider.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String nom = textFieldNom.getText();
				String prenom = textFieldPrenom.getText();
				Mandataire man = getControleur().rechMandataire(nom+prenom);
				float ret = Float.parseFloat(textFieldMontant.getText());
				if(_compteP != null)
					getControleur().retraitArgent(_compteP ,ret);
				else if (_compteS != null)
					getControleur().retraitArgent(_compteS ,ret, man);
			}
	});
		btnValider.setBounds(277, 359, 117, 29);
		contentPane.add(btnValider);
		
	}
	///////////////////////////////////////////////////

	/**
	 * definition des etats de la fenetre
	 */
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			textFieldNumCompte.setEditable(true);
			textFieldPrenom.setEditable(false);
			textFieldNom.setEditable(false);
			textFieldMontant.setEditable(false);
			

			btnRechercher.setEnabled(true);
			btnQuitter.setEnabled(true);
			btnAnnuler1.setEnabled(false);
			btnRechercher2.setEnabled(false);
			btnAnnuler2.setEnabled(false);
			btnValider.setEnabled(false);

			break;
		}
		
		case inter1: {
			textFieldNumCompte.setEditable(false);
			textFieldPrenom.setEditable(true);
			textFieldNom.setEditable(true);
			textFieldMontant.setEditable(false);

			btnRechercher.setEnabled(false);
			btnQuitter.setEnabled(true);
			btnAnnuler1.setEnabled(true);
			btnRechercher2.setEnabled(true);
			btnAnnuler2.setEnabled(false);
			btnValider.setEnabled(false);
			
			
			
			break;
		}
		case finale: {
			textFieldNumCompte.setEditable(false);
			textFieldPrenom.setEditable(false);
			textFieldNom.setEditable(false);
			textFieldMontant.setEditable(true);

			btnRechercher.setEnabled(false);
			btnQuitter.setEnabled(true);
			btnAnnuler1.setEnabled(false);
			btnRechercher2.setEnabled(false);
			btnAnnuler2.setEnabled(true);
			btnValider.setEnabled(true);
			
			break;
			}
		}
	}
	
	private CompteSociete getCompteSociete() {
		return _compteS;
	}
	private void setCompteSociete(CompteSociete cs) {
		_compteS = cs;
	}

	private ComptePerso getComptePerso() {
		return _compteP;
	}
	private void setComptePerso(ComptePerso cp) {
		_compteP = cp;
	}
	private Societe getSociete() {
		return _societe;
	}
	private void setSociete(Societe soc) {
		 _societe = soc;
	}
	private ClientPhysique getClientPhysique() {
		return _clientP;
	}
	private void setClientPhysique(ClientPhysique clp) {
		_clientP = clp;
	}
}
